package com.stone.design.mode.iterator;

import java.util.ArrayList;
import java.util.List;

/**
 * 真实容器实现
 *
 * @author Mr_wenpan@163.com 2022/01/16 13:49
 */
public class ConcreteContainer<T> implements Container<T> {

    /**
     * 我们这里使用list集合来实现一个容器（list内部是使用数组来实现，我们这里就不用那么麻烦自己使用数组实现了），
     * 也可以自己选择一个合适的数据结构来实现
     */
    private final List<T> list = new ArrayList<>();

    @Override
    public void add(T element) {
        // 往容器中添加一个元素
        list.add(element);
    }

    @Override
    public void remove(T element) {
        // 从容器中删除一个元素
        list.remove(element);
    }

    @Override
    public Iterator<T> iterator() {
        // 创建一个该容器的迭代器
        return new ConcreteIterator<>(list);
    }
}
